package com.zangs.emqx_expand.emqx.mapper;

import java.util.List;
import com.zangs.emqx_expand.emqx.domain.MqttUser;
import org.apache.ibatis.annotations.Param;

/**
 * MQTT 用户Mapper接口
 * 
 * @author zangs
 * @since 2025-01-25
 */
public interface MqttUserMapper 
{
    /**
     * 查询MQTT 用户
     * 
     * @param id MQTT 用户主键
     * @return MQTT 用户
     */
    public MqttUser selectMqttUserById(Long id);
    public MqttUser selectMqttUserNoPasswordById(Long id);
    MqttUser selectMqttUserByUsername(String username);


    MqttUser selectMqttUserByUidAndIsSuperuser(@Param("userUid") String userUid,@Param("superuser") boolean superuser);

    /**
     * 查询MQTT 用户列表
     * 
     * @param mqttUser MQTT 用户
     * @return MQTT 用户集合
     */
    public List<MqttUser> selectMqttUserList(MqttUser mqttUser);
    public List<MqttUser> selectMqttUserNoPasswordList(MqttUser mqttUser);

    /**
     * 新增MQTT 用户
     * 
     * @param mqttUser MQTT 用户
     * @return 结果
     */
    public int insertMqttUser(MqttUser mqttUser);

    /**
     * 修改MQTT 用户
     * 
     * @param mqttUser MQTT 用户
     * @return 结果
     */
    public int updateMqttUser(MqttUser mqttUser);

    /**
     * 删除MQTT 用户
     * 
     * @param id MQTT 用户主键
     * @return 结果
     */
    public int deleteMqttUserById(Long id);

    /**
     * 批量删除MQTT 用户
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMqttUserByIds(Long[] ids);

    List<MqttUser> selectMqttUsersByUidsAndIsSuperuser(@Param("userUids")  List<String> userUids,  @Param("isSuperuser") boolean superuser);
}
